home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #230 (1993)(Rhein-Sieg-Soft).zip / Franz PD Disk #230 (1993)(Rhein-Sieg-Soft).adf / Window-Manager / Winman.dok < prev    next >
Text File  |  1993-04-15  |  17KB  |  415 lines

  1.  
  2.             Window-Manager V1.2 (Demo)
  3.                   von
  4.             Taurus-Software (1992,93)
  5.  
  6.             Marco Brandt
  7.             Zweibrueckerstr. 42
  8.             W-6780 (D-66953) Pirmasens
  9.  
  10.     Deutsche Anleitung zur Demoversion von Window-Manager
  11.  
  12. 1. Anwendungsbereich des Programms:
  13.  
  14.    Das Programm Window-Manager dient dazu, dem Benutzter Informationen
  15.    über die Elemente des Intuition-Systems (Screens,Windows...) zu
  16.    liefern. Es eignet sich deshalb sehr gut zur Fehlersuche in eigenen
  17.    Programmen, die das Intuition-System nutzen. Man kann mit Window-Manager
  18.    die wichtigsten Daten eines Windows abfragen (z.B. Basisadresse der
  19.    Window-Struktur,Adresse der Screen-Struktur,Window-Flags).
  20.    Somit ist es möglich, die Fehler eines eigenen Programmes zu erkennen,
  21.    ohne Kenntnisse über die internen Betriebssystemstrukturen zu besitzen.
  22.    (Wer in Assembler oder C programmiert, besitzt natürlich sowieso Kenntnisse
  23.    über Window-Strukturen).
  24.    Durch die Funktion, sich die Daten eines Fensters als Assembler-
  25.    quellcode ausgeben lassen zu können, ist es möglich, fertige Windows
  26.    auf einfachste Weise ins eigene Programm zu übernehmen.
  27.    Natürlich ist Window-Manager auch ideal, wenn man einfach etwas über
  28.    die interne Verwaltung von Windows unter Intuition erfahren will.
  29.  
  30. 2. Vorliegende Version und Nutzungsrechte:
  31.  
  32.    Es gibt momentan 3 Versionen von Window-Manager:
  33.  
  34.    Version 1.2: Diese Version ist die Demo-Version von Window-Manager.
  35.         Sie läuft unter jeder bekannten Version des Betriebs-
  36.         systems. Diese Version gestattet die Untersuchung
  37.         von Intuition-Windows. Weitere Intuition-Elemente
  38.         werden zur Zeit noch nicht unterstützt.
  39.         Die Demo-Version darf frei benutzt und kopiert werden,
  40.         solange diese Anleitungen und das Programm selbst nicht 
  41.          verändert werden. Außerdem müssen alle Dateien
  42.         in einem Verzeichnis gelassen werden.
  43.         Die Verbreitung des Programms ohne die dazugehörigen
  44.         Text-Files ist nicht erlaubt. Das Programm darf auf
  45.                 unbegrenzte Zeit benutzt werden, ohne daß eine Zahlung
  46.                 an den Autor getätigt werden muß.
  47.  
  48.    Version 1.3: Diese Version ist die erste Vollversion des Programms.
  49.         Sie läuft unter jeder bekannten Version des Betriebs-
  50.         systems. Die Benutzteroberfläche dieser Version ist
  51.         bereits im "2.0er-Look" gestaltet. Bei Window-Manager
  52.         V1.3 wird neben dem Fenster-Infoservice auch die
  53.         Untersuchung von Screens und Menus unterstützt.
  54.         
  55.         Diese Version ist nur zur Erhaltung der Kompatiblität
  56.         mit OS 1.x erstellt worden. Deshalb enthält diese Version
  57.         von Window-Manager keinen Update-Service.
  58.  
  59.    Version 1.4:    Diese Version ist die endgültige Vollversion des Window-
  60.         Manager. Sie ist nur ab Kickstart 2.04 lauffähig.
  61.         Es wurden seit Version 1.3 erhebliche Verbesserungen
  62.         vorgenommen. Diese Version beinhaltet ein kostenloses
  63.         Update (bzw. Upgrade bei erscheinen von WindowMan. 1.5)
  64.         
  65.    Alle Versionen ab V1.3 dürfen nicht frei kopiert werden.
  66.    Jeder Benutzer von Window-Manager wird registriert und erhält eine
  67.    eigene Benutzernummer. Nur so ist es möglich, alle registrierten
  68.    Benutzer über das Erscheinen einer neuen Version von Window-Manager
  69.    zu informieren. Das Erstellen von Sicherheitskopien und die 
  70.    Installation auf Festplatte sind natürlich erlaubt. Lediglich die
  71.    Weitergabe an einen nicht registrierten Benutzer ist untersagt.
  72.    Ein unrechtmäßiger Besitzer des Programms erhält natürlich kein
  73.    Update.
  74.  
  75.  
  76.  
  77. 3. Bedienungsanleitung Window-Manager V1.2
  78.  
  79. 3.1 Grundlagen von Intuition:
  80.  
  81.    Damit man die Funktion des Programmes besser versteht, sollte man 
  82.    wissen, wie Intuition intern die Windows verwaltet.
  83.  
  84.    Für jedes Window gibt es einen eigenen Speicherbereich, in dem die
  85.    Informationen über das Window stehen. Dieser Bereich ist 132 Byte
  86.    groß und sieht so aus: (unter Kick 1.x)
  87.  
  88.    Struktur Window (definiert im Include-File intuition/intuition.i)
  89.  
  90. $00  00  APTR     Struct Window *NextWindow     ;Zeiger auf Nächstes
  91. $04  04  WORD   LeftEdge            ;X-Koord linker Rand
  92. $06  06  WORD   TopEdge             ;Y-Koord oberer Rand
  93. $08  08  WORD   Width                ;Breite
  94. $0A  10  WORD   Height                ;Höhe
  95. $0C  12  WORD   MouseY                ;Mausposition Y
  96. $0E  14  WORD   MouseX                ;Mausposition X
  97. $10  16  WORD   MinWidth            ;Minimale Breite
  98. $12  18  WORD   MinHeight            ;Minimale Höhe
  99. $14  20 UWORD   MaxWidth            ;Maximale Breite
  100. $16  22 UWORD   MaxHeight            ;Maximale Höhe
  101. $18  24 ULONG   Flags                ;Window-Flaggen
  102. $1C  28  APTR   Struct Menu *Menustrip        ;Zeiger auf Menuleiste
  103. $20  32  APTR    UBYTE *Title            ;Zeiger auf Windowtitle
  104. $24  36  APTR   Struct Requester *FirstRequest    ;Zeiger auf ersten Req.
  105. $28  40  APTR   Struct Requester *DMRequest    ;Zeiger auf DMouseReq.
  106. $2C  44  WORD   Reqcount            ;Anzahl der Requester
  107. $2E  46  APTR   Struct Screen *WScreen        ;Zeiger auf Screen
  108. $32  50  APTR   Struct Rastport *Rport        ;Zeiger auf Rastport
  109. $36  54  BYTE   Borderleft             ;Breite der Ränder
  110. $37  55  BYTE   BorderTop
  111. $38  56  BYTE   BorderRight
  112. $39  57  BYTE   BorderBottom
  113. $3A  58  APTR   Struct Rastport *BorderRport    ;Zeiger auf RandRport
  114. $3E  62  APTR   Struct Gadget *FirstGadget    ;Zeiger auf Gadgetliste
  115. $42  66  APTR    Struct Window *Parent        ;Zeiger auf Vorgänger
  116. $46  70  APTR    Struct Window *Descendant    ;Zum Schliessen
  117. $4A  74  APTR   USHORT *Pointer            ;Zeiger auf Mauscursor
  118. $4E  78     BYTE    PtrHeight            ;Höhe des Mauscursor
  119. $4F  79  BYTE    PrtWidth            ;Breite des Mauscursor
  120. $50  80  BYTE    XOffset                ;Markierung Hot-Spot
  121. $51  81  BYTE    YOffset            
  122. $52  82 ULONG    IDCMPFlags            ;Message-Flags
  123. $56  86  APTR    Struct MsgPort *UserPort    ;Zeiger auf Userport
  124. $5A  90  APTR    Struct MsgPort *WindowPort    ;Zeiger auf Windowport
  125. $5E  94  APTR   Struct Intuimessage *MessageKey ;Nachricht von Intuition
  126. $62  98 UBYTE   DetailPen            ;Vordergrundfarbe
  127. $63  99 UBYTE   BlockPen            ;Hintergrundfarbe
  128. $64 100  APTR   Struct Image *CheckMark        ;Zeiger auf Grafik
  129. $68 104  APTR   UBYTE *ScreenTitle        ;Zeiger auf Screentitle
  130. $6C 108  WORD   GZZMouseX            ;Mausposition im GZZWin
  131. $6E 110  WORD   GZZMouseY
  132. $70 112  WORD   GZZWidth            ;GZZWin Breite
  133. $72 114  WORD   GZZHeight            ;GZZWin Höhe
  134. $74 116  APTR    UBYTE *ExtData            ;Zeiger auf weitere Daten
  135. $78 120  APTR   BYTE *UserData            ;Zeiger auf eigene Daten
  136. $7C 124  APTR    Struct Layer *WLayer        ;Zeiger auf Layer für Win
  137. $80 128  APTR   Struct Textfont *Ifont        ;Zeiger auf Font
  138.  
  139.    Die beiden Zahlen geben zuerst das Offset zur Basisadresse
  140.    der Struktur an. Diese Basisadresse erhält man z.B. von der
  141.    Funktion OPENWINDOW.
  142.    Danach folgt der Datentyp (z.B Byte,Word,Long). Steht kein "U" vor
  143.    diesem Datentyp, so kann es sich um eine Größe mit Vorzeichen handeln.
  144.  
  145.    Hier sind die wichtigsten Felder erklärt:
  146.  
  147.    NextWindow: In diesem Langwort befindet sich die Adresse der nächsten
  148.               Window-Struktur. Die Strukturen sind in einer sg.
  149.              verketteten Liste aneinandergesetzt. In jeder Struktur
  150.            befindet sich also ein Zeiger auf den Nachfolger,in 
  151.            diesem befindet sich wieder ein Zeiger auf die nächste
  152.                Struktur. Der Zeiger auf das erste Window im Screen
  153.            befindet sich in der Screen-Struktur.
  154.  
  155.    LeftEdge,
  156.    TopEdge:    Diese Felder beinhalten die X und Y-Koordinaten
  157.            relativ zur linken oberen Ecke des Screens in Pixeln.
  158.  
  159.    Width,
  160.    Height:     Breite und Höhe des Windows in Bildpunkten.
  161.  
  162.    MouseX,Y:   Mausposition in Bildpunkten relativ zur linken oberen Ecke
  163.                des Windows.
  164.  
  165.    Min,Max-
  166.    Width&
  167.    Height:     Das ist die Größe, die das Window minimal bzw. maximal
  168.                annehmen kann. Die maximale Größe ist natürlich durch
  169.              den Screen beschränkt.
  170.  
  171.    Flags:      Window-Flags. Diese Flags geben an, welche Eigenschaften
  172.            das Window hat. Unter Kick 1.x existieren folgende
  173.                Windowflags:
  174.  
  175.         Bit  0 ($0001) - WINDOWSIZING : Das Fenster kann seine
  176.                                  Größe ändern.
  177.         Bit  1 ($0002) - WINDOWDRAG   : Das Fenster kann verschoben
  178.                             werden (Titelleiste).
  179.         Bit  2 ($0004) - WINDOWDEPTH  : Das Fenster hat Tiefen-
  180.                             Gadgets.
  181.         Bit  3 ($0008) - WINDOWCLOSE  : Das Fenster hat ein Schließ-
  182.                             Symbol.
  183.         Bit  4 ($0010) - SIZEBRIGHT   
  184.  
  185.         Bit  5 ($0020) - SIZEBOTTOM  
  186.     
  187.         Bit  6 ($0040) - SIMPLE_REFR  : Das Fenster meldet nur
  188.                             Beschädigungen
  189.         Bit  7 ($0080) - SUPER_BITMAP : Das Fenster hat eigene
  190.                             Bitmap (Refresh)
  191.         Wenn kein Refresh-Bit gesetzt ist, dann gilt
  192.         SMART_REFR.
  193.  
  194.         Bit  8 ($0100) - BACKDROP     : Das Fenster ist ein Back-
  195.                             drop Fenster (wie Workbench)
  196.         Bit  9 ($0200) - REPORTMOUSE  
  197.  
  198.         Bit 10 ($0400) - GIMMEZEROZERO: Der Rand wird getrennt vom
  199.                         Fenster verwaltet.
  200.         Bit 11 ($0800) - BORDERLESS   : Das Fenster hat keinen Rand.
  201.  
  202.         Bit 12 ($1000) - ACTIVATE     : Beim Öffnen soll das Fenster
  203.                           aktiviert werden.
  204.         Bit 13 ($2000) - WINDOWACTIVE : Das Fenster ist gerade aktiv.
  205.  
  206.         Bit 14 ($4000) - INREQUEST    : Das Fenster hat gerade einen
  207.                         Requester
  208.         Bit 15 ($8000) - MENUMODE     : Das Menu vom Fenster wird 
  209.                         gerade angewählt.
  210.         Bit 16 $100000 - RMBTRAP      : Bei Druck auf rechtem Maus-
  211.                         knopf soll kein Menu kommen.
  212.  
  213.    MenuStrip:  Zeiger auf eine Menustruktur. Da eine Menuleiste
  214.            zwar in der Screenleiste erscheint, aber zum Fenster
  215.            gehört, steht der Zeiger in der Windowstruktur.
  216.  
  217.    Title:      Zeiger auf den Titeltext des Windows, der mit
  218.            einem Nullbyte ($00 nicht ASC("0")) abgeschlossen
  219.            sein muß.
  220.  
  221.    WScreen:    Zeiger auf die Struktur des Screens, auf dem das
  222.            Fenster geöffnet ist.
  223.  
  224.    First
  225.    Gadget:     Zeiger auf eine verkettete Liste aller Gadgets in diesem Window.
  226.  
  227.    IDCMPFlags: Diese Flags bestimmen, bei welchen Ereignissen die
  228.            Application von Intuition eine Nachricht erhalten soll.
  229.                Wenn nämlich ein Window ein Schließsymbol enthält,
  230.            heißt das noch lange nicht, das es damit auch geschlossen
  231.             werden kann. (Man nehme nur einmal das Fenster eines
  232.            abgestürzten Programmes. Da kann man noch so oft auf
  233.            das Close-Gadget klicken, das Fenster wird sich nicht
  234.            schließen.) Damit sich das Fenster schließt, muß die
  235.              Application (das Anwenderprogramm) die Routine
  236.            CLOSEWINDOW aufrufen. Damit sie jedoch überhaupt weiß,
  237.            wann das Fenster geschlossen werden soll (wann der User
  238.                das Schließsymbol angewählt hat), setzt man das IDCMP-
  239.            Flag CLOSEWINDOW. Dann erhält man eine Nachricht von
  240.            Intuition im UserPort des Windows, sobald der User
  241.            wünscht, es zu schliessen.
  242.                Die IDCMP-Flags geben also an, über welche Ereignisse
  243.            am Window man informiert werden will.
  244.  
  245.            Es gibt folgende IDCMP-Flags:
  246.  
  247.            SIZEVERIFY     : Das Fenstergröße wird geändert
  248.         NEWSIZE        : Die neue Größe liegt fest
  249.         REFRESHWINDOW   : Der Inhalt wurde beschädigt
  250.         MOUSEBUTTONS    : Eine Maustaste gedrückt
  251.         MOUSEMOVE    : Maus wurde bewegt
  252.         GADGETDOWN    : Gadget wurde gedrückt
  253.         GADGETUP    : Gadget wurde losgelassen
  254.         REQSET        : Requester wurde eingerichtet
  255.         MENUPICK    : Menu wurde angewählt
  256.         CLOSEWINDOW    : Closegadget angewählt
  257.         RAWKEY        : Taste gedrückt (Roh-Format)
  258.         REQVERIFY    
  259.         REQCLEAR    : Requester wieder gelöscht
  260.         MENUVERIFY
  261.         NEWPREFS    : Neue Voreinstellungen eingerichtet
  262.         DISKINSERTET    : Eine Diskette wurde eingelegt
  263.         DISKREMOVED     : Diskette wurde entfernt
  264.         WBENCHMESSAGE
  265.         ACTIVEWINDOW    : Fenster wurde aktiviert
  266.         INACTIVEWINDOW  : Fenster wurde deaktiviert
  267.         DELTAMOVE    : Relative Mauskoordinaten
  268.         VANILLAKEY    : Taste gedrückt (überarbeitet)
  269.         INTUITICKS    : Ticks gesendet
  270.  
  271.    Die Flags stehen in der Reihenfolge der gesetzten Bits (0-22).
  272.  
  273.    Userport:   Messageport, in dem die Nachrichten von
  274.            Intuition ankommen.
  275.  
  276.    WindowPort: Messageport, in den die Nachrichten für 
  277.            Intuition gesteckt werden.
  278.  
  279.    Screentitle:
  280.            Der Zeiger auf den mit $00 beendeten Titeltext des
  281.            Screens steht deshalb in der Windowstruktur,
  282.            weil der Screen bei jedem Window einen anderen Titel
  283.            haben kann (wie beim Menu).
  284.  
  285. 3.2 Window-Manager und die Strukturen
  286.  
  287.    Das Hauptfenster des Window-Manager zeigt wichtige Felder der
  288.    Window-Struktur an. Dies wären im einzelnen die Felder für
  289.    die Position,Größe,minimale und maximale Größe,Flags,IDCMP,
  290.    Adresse der Menustruktur,Adresse des Screens,Adresse der 
  291.    Window-Struktur und natürlich der Name des Fensters.
  292.    In späteren Versionen wird Window-Manager noch weitere Felder
  293.    unterstützen, jedoch reichen die Angaben von Window-Manager 1.2
  294.    schon aus, um die wichtigsten Daten des Windows zu erkennen.
  295.  
  296. 3.3 Bedienung der Gadgets von Window-Manager 1.2
  297.  
  298.    In der Basis der Intuition.library existiert ein Zeiger auf
  299.    das gerade aktive Fenster. Diesen Zeiger kann man mit dem 
  300.    Gadget "GET INFO" ausnutzen. Dazu klickt man einfach auf das
  301.    Gadget und aktiviert danach innerhalb von 3 Sekunden das Fenster,
  302.    über das man Informationen haben will. Beim Anwählen des Gadgets
  303.    wird natürlich das Fenster vom Window-Manager aktiviert. Falls
  304.    man danach kein weiteres Fenster aktiviert, bekommt man die 
  305.    Informationen über das Fenster vom Window-Manager.
  306.  
  307.    Wie bereits oben erwähnt, sind die Fenster in einer verketteten
  308.    Liste organisiert. Jedes Fenster hat also einen Vorgänger und
  309.    einen Nachfolger. Mit Hilfe des Gadgets "NEXT" kann man sich
  310.    Informationen über den Nachfolger eines Fensters holen.
  311.  
  312.    Falls ein Programm ein offenes Fenster auf der Workbench hat,
  313.    und dieses Programm abstürzt, so kann es passieren, daß dieses
  314.    Fenster sich nicht mehr schliessen läßt. Da der Amiga ja ein
  315.    Multitasking-Betriebssystem hat, kann man in der Regel trotz
  316.    des abgestürzten Programmes weiterarbeiten. Das offene Fenster
  317.    verbraucht jedoch wertvollen Speicherplatz und stört außerdem
  318.    die Arbeitsoberfläche der Workbench. Um das Fenster zu beseitigen,
  319.    holt man es sich einfach mit Hilfe von "GET INFO" oder "NEXT" in 
  320.    den Window-Manager, und kann es dann einfach mit dem Gadget "CLOSE"
  321.    schliessen. Bevor jedoch das Fenster geschlossen wird, erscheint
  322.    noch ein Requester mit einer Sicherheitsabfrage. Sollte man
  323.    nämlich einmal ein Fenster schließen, das noch in Gerauch ist,
  324.    so wird das ganze System mit hoher Wahrscheinlichkeit abstürzen.
  325.   
  326.    WARNUNG: Bei diesen Abstürzen handelt es sich meist um        
  327.         totale Systemabstürze !! Alle Daten, die zu diesem
  328.             Zeitpunkt im Speicher waren gehen verloren !!!!!
  329.  
  330.    Mit dem Gadget "SAVE" kann man die Daten des untersuchten Fensters
  331.    als NEWWINDOW-Struktur abspeichern. Dazu muß man nur noch den Pfad
  332.    und Namen der Datei angeben z.B. RAM:NEWWINDOW, und der Window-Manager
  333.    speichert die Struktur im Assemblerformat.
  334.  
  335.    Mit dem Gadget "HEX" kann man die Darstellung der Daten ändern.
  336.    Nach dem Klicken auf dieses Gadget werden die Daten dezimal angezeigt.
  337.    Das dezimale Format ist natürlich leichter zu verstehen als die
  338.    hexadezimale Darstellung. Dafür kann es allerdings vorkommen, daß die
  339.    angezeigte Zahl nicht ganz in das Display passt.
  340.  
  341.    Mit dem "?" kann man sich noch einmal eine Kurzzusammenfassung
  342.    der Gadgets geben lassen.
  343.  
  344.    Mit dem Closegagdet kann man das Programm beenden.
  345.  
  346. 4. Vorschau auf die Vollversionen:
  347.  
  348.    Wer jetzt den Window-Manager schon für ein gutes Utility hält,
  349.    wird sich über den Funktionsumfang der Vollversionen erst recht
  350.    freuen. Window-Manager V1.2 ist ja immerhin nur eine Demoversion
  351.    und hat nur ca. 1/4 des Funktionsumfangs der Version 1.3.
  352.    Und bei Version 1.4, die dann nur noch unter Kickstart 2.04 läuft
  353.    kommt noch eine Unzahl neuer Funktionen hinzu.
  354.  
  355.    Nun aber zu den konkreten Änderungen von 1.2 auf 1.3:
  356.  
  357.    Ein ähnliches Info-Fenster, wie es jetzt für die Windows vorhanden
  358.    ist, wird es auch für die Screens geben.
  359.  
  360.  * Funktion zum Schließen toter Screens.
  361.  
  362.  * Holen des ersten Fensters des Screens
  363.  
  364.  * Neues Fenster zum Untersuchen von Menus
  365.  
  366.  * Unterstützung von Tastaturkommandos
  367.  
  368.  * weiteres Hilfesystem
  369.  
  370.  * Routine zum Modifizieren der Closewindow-Routine
  371.  
  372.  * Schließen eines Fensters kann verhindert werden
  373.  
  374.  * Strukturspeicherung auch bei Screens möglich
  375.  
  376.  * lauffähig unter Kick 1.0 bis 3.0  (getestet auf 1.2,1.3 und 2.04)
  377.  
  378.  * Fehler im 60-Zeichenmodus behoben
  379.  
  380.  * 2.0er-Look (3D-Oberfläche)
  381.  
  382.  * mehr Gadget Auswahlmöglichkeiten
  383.  
  384.  * englische und deutsche Version verfügbar
  385.  
  386. Verbesserungen auf Window-Manager V1.4:
  387.     (zusätzlich zu denen auf V1.3)
  388.  
  389.  * vernünftiger ASL-Filerequester 
  390.  
  391.  * Unterstützung der neuen IntuiItem-Flags
  392.  
  393.  * Unterstützung der ECS-Viewmodes bei Screens
  394.  
  395.  * Listenfunktion zur besseren Auswahl der Windows/Screens/Menus...
  396.  
  397.  * Abspeichern von Strukturen und Taglisten möglich
  398.  
  399.  * Freibabe des "Ändern"-Gadgets
  400.  
  401.  * Ein (1!) kostenloses Update/Upgrade für registrierte Benutzer
  402.   
  403.  
  404. Achtung: Wenn Sie Kickstart 2.04 oder höher besitzen, sollten Sie auf
  405.      jeden Fall Window-Manager 1.4 bestellen. Nur diese und die
  406.         nachfolgenden Versionen nutzen die Fähigkeiten des neuen
  407.        Betriebssystems voll aus !
  408.  
  409.  
  410.         M.Brandt 
  411.         Zweibrueckerstr. 42
  412.  
  413.      W-6780 (D-66953) Pirmasens
  414.    
  415.